Looker初心者が地図データを表示してみた #looker
はじめに
こんにちは。DI部の大高です。
「地図データをLooker(ルッカー)で表示してみたい」という想いから「初めてLookerを触った私が試行錯誤しつつ、どうにか地図を表示させるまで」をご紹介したいと思います。
前提条件
LookerはBIツール・サービスであり、次世代のデータプラットフォームとして各種データソースを元にしてデータを可視化することができます。詳しくは以下の記事をご覧頂ければと思います。
このLookerの管理者権限(Admin)のユーザーを社内で作成してもらい、ログインしてみた、というのがスタート地点となります。
なお、わたしは他のBIツールはいくつか利用したことがあるのですが、Lookerは全くの初心者で 最初に説明書は読まないタイプ の為、以下の流れは「画面を触りながら試行錯誤して地図を表示させるまで」をまとめたものとなっております。
それでは順に参ります。
データソースの準備
以下の記事から、データソースとしてデータベースを作成する必要があると認識していたので、まずはAmazon RDSでPostgresqlサーバをサクッと作成しました。
なお、セキュリティーグループの設定については、以下のドキュメントからLookerインスタンスのリージョン用ホワイトリストを許可すれば良さそうだったので「Asia」向けのアドレスを許可しました。
Enabling Secure Database Access
インスタンスが用意できたら、サンプル用のデータベース、テーブルを準備しておきます。
-- データベースを作成 -- "DBユーザー名"はRDS作成時に作成したデータベースユーザをしています。 -- 必要に応じて適切なユーザを設定してください。 CREATE DATABASE looker WITH OWNER = DBユーザー名 ENCODING = 'UTF8' CONNECTION LIMIT = -1; -- テーブルを作成 CREATE TABLE looker.public.point_table ( id serial, latitude double precision, longitude double precision, label text, CONSTRAINT point_table_pkey PRIMARY KEY (id) ); -- サンプルデータをインサート INSERT INTO looker.public.point_table (latitude, longitude, label) VALUES (35.697207, 139.774745, '佐久間'); INSERT INTO looker.public.point_table (latitude, longitude, label) VALUES (35.694010, 139.777514, '岩本'); INSERT INTO looker.public.point_table (latitude, longitude, label) VALUES (35.693862, 139.777186, '橋本');
Connectionの設定
では、Lookerにログインして設定を始めます。まずはメニューの「Admin > Database > Connections」から「New Connection」ボタンをクリックしてデータベース接続設定を行います。
今回は以下の設定を行い、あとはデフォルトのままとしました。
Development Modeの有効化
プロジェクトの作成を行いたいので、まずは「Development Mode」を有効化します。メニューの「Develop」から「Development Mode」を有効にします。
プロジェクトの作成
次にメニューの「Develop > Manage LookML Projects」を開き、「New LookML Project」ボタンから新規にプロジェクトの作成を行います。
「Project Name」に任意のプロジェクト名を指定し、「Starting Point」を選択します。今回は「Blank Project」として空のプロジェクトを作成しました。
SQL RunnerからのSQLの実行
プロジェクトを作成したら、今度は「Develop > SQL Runner」を開き、クエリを記述して実行してみます。なお「CONNECTION」と「SCHEMA」は先程作成したものを指定しておきます。
無事にクエリが実行されると、結果が「RESULTS」に表示されます。
Viewのプロジェクトへの登録
結果が問題なければ右上の歯車アイコンから「Add to Project...」をクリックします。
ここでは今実行したクエリを「View」としてプロジェクトに追加することができます。「Project」に先程作成したプロジェクト名を、「View Name」に任意の名前を指定して「Add」ボタンで追加します。
追加すると、画面は「View」を追加したプロジェクトの画面へ遷移します。
ここでの「View」は以下のようになっています。
view: point_table_view { derived_table: { sql: SELECT id, latitude, longitude, label FROM public.point_table ;; } measure: count { type: count drill_fields: [detail*] } dimension: id { type: string sql: ${TABLE}.id ;; } dimension: latitude { type: number sql: ${TABLE}.latitude ;; } dimension: longitude { type: number sql: ${TABLE}.longitude ;; } dimension: label { type: string sql: ${TABLE}.label ;; } dimension: location { type: location sql_latitude: ${TABLE}.latitude ;; sql_longitude: ${TABLE}.longitude ;; } set: detail { fields: [id, latitude, longitude, label, location] } }
よく見ると自動で location
という「location」型の「dimension」が追加されています。これにより、地図にポイントをプロットできるようになるようです。
Dimension, Filter, and Parameter Types
Modelの作成
作成した「View」を利用する為に今度は「Model」を作成します。「Add...」の右側の「+」ボタンから「Create Model」をクリックして「Model」を作成します。「Model」の名前は任意の名前を指定します。
「Model」を作成すると、画面右側で編集ができるようになるので、この「Model」から先程の「View」を参照できるように1行「explore」の行を追加します。また、接続設定で作成した「Connection」の名前を1行目の「connection」で指定しておきます。
connection: "ootaka_sandbox" include: "*.view.lkml" # include all views in this project # include: "my_dashboard.dashboard.lookml" # include a LookML dashboard called my_dashboard # # Select the views that should be a part of this model, # # and define the joins that connect them together. # explore: point_table_view {} # explore: order_items { # join: orders { # relationship: many_to_one # sql_on: ${orders.id} = ${order_items.order_id} ;; # } # # join: users { # relationship: many_to_one # sql_on: ${users.id} = ${orders.user_id} ;; # } # }
設定したら右上の「Save」ボタンで保存しておきます。
この時点で、ブラウザの画面をリフレッシュすると、メニューの「Explore」配下に、作成した「Model」と「View」が表示されるようになります。
ダッシュボードの作成
次にダッシュボードの作成です。メニューの「Browse」から自分の「Space」を開きます。
開いたら「Space」にダッシュボードを作成します。右上の「New」ボタンから「Dashboard...」を選択します。
ダッシュボード名を入力して「Create Dashboard」ボタンをクリックするとダッシュボード編集画面へ遷移します。
画面中央に「NEWTILE」ボタンがあるので、クリックして「Tile」を作成します。
まず始めに「Explore」の選択画面になるので、先程作成した「Point Table View」を選択します。
すると「Tile」の編集画面になります。
「DIMENTIONS」から利用したいものを選択して、右上の「RUN」ボタンから実行します。今回はすべて選択しました。
実行するとすぐに「VISUALIZATION」の箇所に地図が表示されました!
あとは微調整です。右上の歯車アイコンから「Points」タブを開き「Icon」を選択してマーカーアイコンにスタイルを変更します。
変更できたら、「Tile」の名前を設定して右上の「Save」から保存します。
ダッシュボードに「Tile」が追加されました!
あとはタイルの大きさやズームレベルを変更して、右上の「Done Editing」から編集を完了します。
表示結果
以上の流れでダッシュボードに地図を表示することができました。設定通り地図が表示されていますね。ちなみに地図はMapboxを利用したOpenStreetMapの地図のようです。
また、マーカーをクリックするとレコード内容が表示されています。
まとめ
以上、Lookerでの地図表示をするまでの一連の流れでした。もっとスマートに作成する方法もあるかと思いますが、「まずは地図データを表示してみる」という観点からご紹介させて頂きました。
この記事がどなたかのお役に立てば幸いです。それでは!